package com.fulihui.wgj.consumer.communication.event;


import com.fulihui.open.weixin.enums.EventTypeEnum;
import com.fulihui.wgj.facade.msg.EventMsg;
import lombok.extern.slf4j.Slf4j;
import org.near.toolkit.common.StringUtil;
import org.springframework.stereotype.Component;


/**
 * @author LiuJie
 * 2018-07-19
 * 模板消息发送成功事件，每一个模板消息都会有一个推送，但没有做处理
 */
@Component
@Slf4j
public class TemplateSendJobFinishProcessor implements EventMsgProcessor {

    /**
     * 执行处理的函数
     *
     * @param message 消息模型
     */
    @Override
    public void process(EventMsg message) {
        String appId = message.getAppId();
        String status = message.getStatus();

        if(StringUtil.isBlank(appId) || StringUtil.isBlank(status)){
            return;
        }

        switch (status.trim()){
            case "success":
                //成功
                log.info("模板消息推送成功，appid={},openid={},msgId={}",appId,message.getFromUserName(),message.getMsgId());
                break;
            case "failed:user block":
                // 用户拒收
                log.info("模板消息推送失败，用户拒收，appid={},openid={},msgId={}",appId,message.getFromUserName(),message.getMsgId());
                break;
            case "failed:system failed":
                // 其他原因失败
                log.info("模板消息推送失败，其他原因，appid={},openid={},msgId={}",appId,message.getFromUserName(),message.getMsgId());
                break;
            default:
                // 其他其他原因失败
                log.info("模板消息推送回执异常，msg={}",message);
        }

    }

    @Override
    public String getEvent() {
        return EventTypeEnum.TEMPLATESENDJOBFINISH.getCode();
    }
}
